package modelos;

import java.util.Vector;

public class Equipo {
	
	private int codigo;
	private String nombre;
	private long anoFundacion;
	private String ciudad;
	private String estadio;
	private Vector<Jugador> jugadores;
	private Vector<Partido> partidos;
	
	public Equipo() {
		this.codigo = 0;
		this.nombre = "";
		this.anoFundacion = 1900;
		this.ciudad = "";
		this.estadio = "";
		this.jugadores = new Vector<Jugador>();
		this.partidos = new Vector<Partido>();
	}
	
	public Equipo(int codigo, String nombre, long anoFundacion,
			String ciudad, String nombreEstadio) {
		this.codigo = codigo;
		this.nombre = nombre;
		this.anoFundacion = anoFundacion;
		this.ciudad = ciudad;
		this.estadio = nombreEstadio;
		this.jugadores = new Vector<Jugador>();
		this.partidos = new Vector<Partido>();
	}

	public int getCodigo() {
		return codigo;
	}

	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public long getAnoFundacion() {
		return anoFundacion;
	}

	public void setAnoFundacion(long anoFundacion) {
		this.anoFundacion = anoFundacion;
	}

	public String getCiudad() {
		return ciudad;
	}

	public void setCiudad(String ciudad) {
		this.ciudad = ciudad;
	}

	public String getEstadio() {
		return estadio;
	}

	public void setEstadio(String estadio) {
		this.estadio = estadio;
	}

	public Vector<Jugador> getJugadores() {
		return jugadores;
	}

	public void setJugadores(Vector<Jugador> jugadores) {
		this.jugadores = jugadores;
	}

	public Vector<Partido> getPartidos() {
		return partidos;
	}

	public void setPartidos(Vector<Partido> partidos) {
		this.partidos = partidos;
	}
	
	public void agregarJugador(Jugador jugador) {
		jugador.setEquipo(this);
		jugadores.addElement(jugador);
	}
	
	public void agregarPartido(Partido partido) {
		partidos.addElement(partido);
		for (int i = 0; i < cantidadJugadores(); i++)
			jugadores.get(i).agregarPartido(partido);
	}

	public int cantidadJugadores() {
		return jugadores.size();
	}
	
	public int cantidadPartidos() {
		return partidos.size();
	}
	
	public int golesFavor() {
		int goles = 0;
		for (int i=0;i<this.cantidadJugadores();i++){
			goles = goles + jugadores.elementAt(i).cantidadGoles();
		}
		return goles;
	}
	
	public int golesContra() {
		int goles = 0;
		for (int i=0;i<this.cantidadPartidos();i++){
			if(this == partidos.elementAt(i).getEquipoCasa())
				goles = goles + partidos.elementAt(i).golesVisitante();
			else
				goles = goles + partidos.elementAt(i).golesCasa();
		}
		return goles;
	}
	

	public int diferenciaGoles() {
		return golesFavor() - golesContra();
	}
	
	public int juegosGanados() {
		int ganados = 0;
		for (int i=0;i<this.cantidadPartidos();i++){
			if(this == partidos.elementAt(i).getEquipoCasa())
				if(partidos.elementAt(i).golesCasa() > partidos.elementAt(i).golesVisitante())
					ganados++;
			else
				if(partidos.elementAt(i).golesCasa() < partidos.elementAt(i).golesVisitante())
					ganados++;
		}
		return ganados;
	}
	
	public int juegosPerdidos() {
		int perdidos = 0;
		for (int i=0;i<this.cantidadPartidos();i++){
			if(this == partidos.elementAt(i).getEquipoCasa())
				if(partidos.elementAt(i).golesCasa() < partidos.elementAt(i).golesVisitante())
					perdidos++;
			else
				if(partidos.elementAt(i).golesCasa() > partidos.elementAt(i).golesVisitante())
					perdidos++;
		}
		return perdidos;
	}
	
	public int juegosEmpatados() {
		int empates = 0;
		for (int i=0;i<this.cantidadPartidos();i++){
			if(partidos.elementAt(i).golesCasa() == partidos.elementAt(i).golesVisitante())
					empates++;
		}
		return empates;
	}
	
	public int puntos(){
		return (juegosGanados() * 3) + juegosEmpatados();
	}
	
	public int ordenRecord(){
		return (puntos() * 100) + diferenciaGoles();
	}
	
}
